package pe.gob.proviasnac.app.action;

import java.util.ArrayList;
import java.util.List;

import com.google.gson.Gson;

import pe.gob.proviasnac.app.dto.ConsultaDepartamentoUbigeo;
import pe.gob.proviasnac.app.dto.ConsultaDepartamentoUbigeoCriteria;
import pe.gob.proviasnac.app.dto.ConsultaDistritoUbigeo;
import pe.gob.proviasnac.app.dto.ConsultaDistritoUbigeoCriteria;
import pe.gob.proviasnac.app.dto.ConsultaProvinciaUbigeo;
import pe.gob.proviasnac.app.dto.ConsultaProvinciaUbigeoCriteria;
import pe.gob.proviasnac.app.dto.ConsultaUbigeo;
import pe.gob.proviasnac.app.dto.ConsultaUbigeoCriteria;
import pe.gob.proviasnac.app.model.ModelHelper;
import pe.gob.proviasnac.app.mybatis.SessionFactory;

public class UbigeoAction extends ModelHelper {


	private static final long serialVersionUID = -5763758745525603008L;
		
	private String idDepartamento;
	private String idProvincia;
	private Integer idUbigeo;
	private String stringJson;
	
	public String getDepartamentos(){
		this.session = SessionFactory.getSqlSessionFactory().openSession();
		List<ConsultaDepartamentoUbigeo> list = this.consultaDepartamentoUbigeo(new Integer(1));
		Gson json = new Gson();
		stringJson = json.toJson(list);
		return SUCCESS;
	}
	
	public String getProvincias(){
		this.session = SessionFactory.getSqlSessionFactory().openSession();
		List<ConsultaProvinciaUbigeo> list = this.consultaProvinciaUbigeo(this.idDepartamento);
		Gson json = new Gson();
		stringJson = json.toJson(list);
		return SUCCESS;
	}
	
	public String getDistritos(){
		this.session = SessionFactory.getSqlSessionFactory().openSession();	
		List<ConsultaDistritoUbigeo> list = this.consultaDistritoUbigeo(this.idDepartamento, this.idProvincia);
		Gson json = new Gson();
		stringJson = json.toJson(list);
		return SUCCESS;
	}
	
	public String getUbigeo(){
		this.session = SessionFactory.getSqlSessionFactory().openSession();
		ConsultaUbigeo obj = this.consultaUbigeo(this.idUbigeo);
		Gson json = new Gson();
		stringJson = json.toJson(obj);
		return SUCCESS;
	}
	
	public ConsultaUbigeo consultaUbigeo(Integer idUbigeo) 
	{ 
	ConsultaUbigeoCriteria criteria = new ConsultaUbigeoCriteria(); 
	criteria.setIdUbigeo(idUbigeo); 
	 
	List<ConsultaUbigeo> list = 
	(ArrayList<ConsultaUbigeo>) this.selectByCriteria("ConsultaUbigeo", criteria); 
	if(!list.isEmpty()){ 
	return list.get(0); 
	} 
	return null; 
	}  
	
	public List<ConsultaDepartamentoUbigeo> consultaDepartamentoUbigeo(Integer comodin) 
	{ 
	ConsultaDepartamentoUbigeoCriteria criteria = new ConsultaDepartamentoUbigeoCriteria(); 
	criteria.setComodin(comodin); 
	 
	List<ConsultaDepartamentoUbigeo> list = 
	(ArrayList<ConsultaDepartamentoUbigeo>) this.selectByCriteria("ConsultaDepartamentoUbigeo", criteria); 
	return list; 
	}

	public List<ConsultaProvinciaUbigeo> consultaProvinciaUbigeo(String CodDepartamento) 
	{ 
	ConsultaProvinciaUbigeoCriteria criteria = new ConsultaProvinciaUbigeoCriteria(); 
	criteria.setCodDepartamento(CodDepartamento); 
	 
	List<ConsultaProvinciaUbigeo> list = 
	(ArrayList<ConsultaProvinciaUbigeo>) this.selectByCriteria("ConsultaProvinciaUbigeo", criteria); 
	return list; 
	} 

	public List<ConsultaDistritoUbigeo> consultaDistritoUbigeo(String CodDepartamento, String CodProvincia) 
	{ 
	ConsultaDistritoUbigeoCriteria criteria = new ConsultaDistritoUbigeoCriteria(); 
	criteria.setCodDepartamento(CodDepartamento); 
	criteria.setCodProvincia(CodProvincia); 
	 
	List<ConsultaDistritoUbigeo> list = 
	(ArrayList<ConsultaDistritoUbigeo>) this.selectByCriteria("ConsultaDistritoUbigeo", criteria); 
	return list; 
	} 

	public Integer getIdUbigeo() {
		return idUbigeo;
	}

	public void setIdUbigeo(Integer idUbigeo) {
		this.idUbigeo = idUbigeo;
	}

	public String getStringJson() {
		return stringJson;
	}

	public void setStringJson(String stringJson) {
		this.stringJson = stringJson;
	}

	public String getIdDepartamento() {
		return idDepartamento;
	}

	public void setIdDepartamento(String idDepartamento) {
		this.idDepartamento = idDepartamento;
	}

	public String getIdProvincia() {
		return idProvincia;
	}

	public void setIdProvincia(String idProvincia) {
		this.idProvincia = idProvincia;
	}
	
}
